﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace FrontEndPlus.Módulos.Seguridad
{
    public partial class wbfrm_Administracion_Usuarios : System.Web.UI.Page
    {
        WCF_Gimnasio.cls_Rol _BSRoles = new WCF_Gimnasio.cls_Rol();
        WCF_Gimnasio.cls_Permisos_Roles _BSPermisos_Roles = new WCF_Gimnasio.cls_Permisos_Roles();
        WCF_Gimnasio.cls_Usuario _BSUsuarios = new WCF_Gimnasio.cls_Usuario();
        WCF_Gimnasio.ServiceClient _servicio = new WCF_Gimnasio.ServiceClient();
        private validacionControles _valida = new validacionControles();

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    _BSRoles.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUsuario"]);
                    cb_Rol.DataTextField = "Nombre_Rol";
                    cb_Rol.DataValueField = "Id_Rol";
                    cb_Rol.DataSource = _servicio.Listar(1, _BSRoles).Tables[0];
                    cb_Rol.DataBind();

                    _BSRoles.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUsuario"]);
                    cb_Rol_Modificar.DataTextField = "Nombre_Rol";
                    cb_Rol_Modificar.DataValueField = "Id_Rol";
                    cb_Rol_Modificar.DataSource = _servicio.Listar(1, _BSRoles).Tables[0];
                    cb_Rol_Modificar.DataBind();

                    _BSUsuarios.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUsuario"]);
                    cb_Usuario_Modificar.DataTextField = "Usuario";
                    cb_Usuario_Modificar.DataValueField = "Id_Usuario";
                    cb_Usuario_Modificar.DataSource = _servicio.Listar(1, _BSUsuarios).Tables[0];
                    cb_Usuario_Modificar.DataBind();
                    llenarDatosUsuario(cb_Usuario_Modificar.SelectedItem.ToString());
                }
            }
            catch (Exception ex)
            {
                string script = @"<script type='text/javascript'> smoke.alert('" + ex.Message + "', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
            }
        }

        protected void cb_Usuario_Modificar_SelectedIndexChanged(object sender, EventArgs e)
        {
            llenarDatosUsuario(cb_Usuario_Modificar.SelectedItem.ToString());
        }

        private void llenarDatosUsuario(string usuario)
        {
            try
            {
                _BSUsuarios.Usuario = usuario;
                _BSUsuarios = (WCF_Gimnasio.cls_Usuario)_servicio.TraerObjeto(_BSUsuarios);
                if (_BSUsuarios.Resultado)
                {
                    txt_Nombre_Completo_Modificar.Text = _BSUsuarios.Nombre;
                    txt_Descripcion_Modificar.Text = _BSUsuarios.Descripcion;
                    txt_Email_Modificar.Text = _BSUsuarios.Correo;
                    txt_Telefono_Modificar.Text = _BSUsuarios.Telefono.ToString();
                    txt_Cedula_Modificar.Text = _BSUsuarios.Cedula;
                    chk_Estado_Modificar.Checked = _BSUsuarios.IdEstado == 2 ? true : false;
                    cb_Rol_Modificar.SelectedValue = _BSUsuarios.IdRol.ToString();
                    txt_Contrasena_Modificar.Attributes.Add("Value", _BSUsuarios.Contrasena.ToString());
                    txt_Repetir_Contrasena_Modificar.Attributes.Add("Value", _BSUsuarios.Contrasena.ToString());
                    btn_Modificar.Enabled = true;
                }
                else
                {
                    btn_Modificar.Enabled = false;
                    txt_Nombre_Completo.Text = "";
                    txt_Email_Modificar.Text = "";
                    txt_Cedula_Modificar.Text = "";
                    txt_Telefono_Modificar.Text = "";
                    txt_Descripcion_Modificar.Text = "";
                    txt_Contrasena_Modificar.Text = "";
                    txt_Repetir_Contrasena_Modificar.Text = "";
                    cb_Rol_Modificar.SelectedIndex = 0;
                    chk_Estado_Modificar.Checked = false;
                }
            }
            catch (Exception ex)
            {
                string script = @"<script type='text/javascript'> smoke.alert('" + ex.Message + "', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
            }
            finally
            {
                _servicio.Close();
            }
        }

        private void limpiar(string tipoLimpieza)
        {
            try
            {
                _BSUsuarios = null;
                _BSUsuarios = new WCF_Gimnasio.cls_Usuario();

                if (tipoLimpieza == "modificar")
                {
                    cb_Usuario_Modificar.SelectedIndex = -1;
                    llenarDatosUsuario(cb_Usuario_Modificar.SelectedItem.ToString());
                }
                else if (tipoLimpieza == "nuevo")
                {
                    txt_Nombre_Completo.Text = "";
                    txt_Email.Text = "";
                    txt_Descripcion.Text = "";
                    txt_Nuevo_Usuario.Text = "";
                    txt_Cedula.Text = "";
                    txt_Telefono.Text = "";
                    cb_Rol.SelectedIndex = 0;
                    txt_Contrasena.Text = "";
                    txt_Contrasena_Modificar.Text = "";
                    chk_Estado.Checked = false;
                    cb_Usuario_Modificar.DataSource = _servicio.Listar(1, _BSUsuarios).Tables[0];
                    cb_Usuario_Modificar.DataBind();
                    cb_Usuario_Modificar.SelectedIndex = -1;
                }
            }
            catch (Exception ex)
            {
                string script = @"<script type='text/javascript'> smoke.alert('" + ex.Message + "', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
            }
        }

        private void CrearUser()
        {
            try
            {
                if (!string.IsNullOrEmpty(txt_Nombre_Completo.Text) && !string.IsNullOrEmpty(txt_Nuevo_Usuario.Text))
                {
                    if (txt_Contrasena.Text == txt_Repetir_Contrasena.Text)
                    {
                        if (!txt_Contrasena_Modificar.Text.Contains(" "))
                        {
                            if (txt_Cedula.Text != "")
                            {
                                if (txt_Telefono.Text != "" && txt_Telefono.Text.Length == 8)
                                {
                                    if (txt_Contrasena.Text.Length >= 5)
                                    {
                                        if (_valida.emailBienEscrito(txt_Email.Text))
                                        {
                                            string referencia = "";
                                            _BSUsuarios.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUsuario"]);
                                            _BSUsuarios.Nombre = txt_Nombre_Completo.Text;
                                            _BSUsuarios.Usuario = txt_Nuevo_Usuario.Text;
                                            _BSUsuarios.Descripcion = txt_Descripcion.Text;
                                            _BSUsuarios.Contrasena = txt_Contrasena.Text;
                                            _BSUsuarios.Cedula = txt_Cedula.Text;
                                            _BSUsuarios.Telefono = Convert.ToInt32(txt_Telefono.Text);
                                            _BSUsuarios.IdRol = Convert.ToInt32(cb_Rol.SelectedValue);
                                            _BSUsuarios.IdEstado = Convert.ToBoolean(chk_Estado.Checked) == true ? 2 : 1;
                                            _BSUsuarios.Correo = txt_Email.Text;
                                            _servicio.InsertarActualizarRegistro(true, ref referencia, _BSUsuarios);

                                            string script = @"<script type='text/javascript'> smoke.alert('CREADO CORRECTAMENTE', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                                            ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                                            limpiar("nuevo");
                                        }
                                        else
                                        {
                                            string script = @"<script type='text/javascript'> smoke.alert('Correo electrónico mal escrito', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                                            ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                                        }
                                    }
                                    else
                                    {
                                        string script = @"<script type='text/javascript'> smoke.alert('La contraseña debe tener como minimo 5 caracteres', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                                        ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                                    }
                                }
                                else
                                {
                                    string script = @"<script type='text/javascript'> smoke.alert('El campo teléfono no se relleno correctamente', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                                    ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                                }
                            }
                            else
                            {
                                string script = @"<script type='text/javascript'> smoke.alert('El campo cédula no se relleno correctamente', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                            }
                        }
                        else
                        {
                            string script = @"<script type='text/javascript'> smoke.alert('La contraseña no puede contener espacios en blanco', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                        }
                    }
                    else
                    {
                        string script = @"<script type='text/javascript'> smoke.alert('Campo contraseña no es igual', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                    }
                }
                else
                {
                    string script = @"<script type='text/javascript'> smoke.alert('Los campos con (*) son obligatorios', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                }
            }
            catch (Exception ex)
            {
                string script = @"<script type='text/javascript'> smoke.alert('" + ex.Message + "', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
            }
            finally
            {
                _servicio.Close();
            }
        }

        //METODO QUE MODIFICAR LOS DATOS DE USUARIOS DEL SISTEMA
        private void modificarUsuario()
        {
            try
            {
                if (!string.IsNullOrEmpty(txt_Nombre_Completo_Modificar.Text))
                {
                    if (txt_Contrasena_Modificar.Text == txt_Repetir_Contrasena_Modificar.Text)
                    {
                        if (!txt_Contrasena_Modificar.Text.Contains(" "))
                        {
                            if (txt_Cedula_Modificar.Text != "")
                            {
                                if (txt_Telefono_Modificar.Text != "" && txt_Telefono_Modificar.Text.Length == 8)
                                {
                                    if (txt_Contrasena_Modificar.Text.Length >= 5)
                                    {
                                        if (_valida.emailBienEscrito(txt_Email_Modificar.Text))
                                        {
                                            string referencia = "";
                                            _BSUsuarios.IdUsuario = Convert.ToInt32(cb_Usuario_Modificar.SelectedValue);
                                            _BSUsuarios.Usuario = cb_Usuario_Modificar.SelectedItem.ToString();
                                            _BSUsuarios.Contrasena = txt_Contrasena_Modificar.Text;
                                            _BSUsuarios.Nombre = txt_Nombre_Completo_Modificar.Text;
                                            _BSUsuarios.Descripcion = txt_Descripcion_Modificar.Text;
                                            _BSUsuarios.Correo = txt_Email_Modificar.Text;
                                            _BSUsuarios.Cedula = txt_Cedula_Modificar.Text;
                                            _BSUsuarios.Telefono = Convert.ToInt32(txt_Telefono_Modificar.Text);
                                            _BSUsuarios.IdRol = Convert.ToInt32(cb_Rol_Modificar.SelectedValue);
                                            _BSUsuarios.IdEstado = Convert.ToBoolean(chk_Estado_Modificar.Checked) == true ? 2 : 1;
                                            _BSUsuarios.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUsuario"]);
                                            _servicio.InsertarActualizarRegistro(false, ref referencia, _BSUsuarios);

                                            if (_BSUsuarios.IdUsuario != Convert.ToInt32(Session["idUsuario"]))
                                            {
                                                string script = @"<script type='text/javascript'> smoke.alert('Actualizado correctamente', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                                                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                                                limpiar("modificar");
                                            }
                                            else
                                            {
                                                FormsAuthentication.SignOut();
                                                FormsAuthentication.RedirectToLoginPage();
                                            }
                                        }
                                        else
                                        {
                                            string script = @"<script type='text/javascript'> smoke.alert('Correo electrónico mal escrito', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                                            ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                                        }
                                    }
                                    else
                                    {
                                        string script = @"<script type='text/javascript'> smoke.alert('La contraseña debe tener como minimo 5 caracteres', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                                        ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                                    }
                                }
                                else
                                {
                                    string script = @"<script type='text/javascript'> smoke.alert('El campo teléfono no se relleno correctamente', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                                    ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                                }
                            }
                            else
                            {
                                string script = @"<script type='text/javascript'> smoke.alert('El campo cédula no se relleno correctamente', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                            }
                        }
                        else
                        {
                            string script = @"<script type='text/javascript'> smoke.alert('La contraseña no puede contener espacios en blanco', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                        }
                    }
                    else
                    {
                        string script = @"<script type='text/javascript'> smoke.alert('Campo contraseña no es igual', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                    }
                }
                else
                {
                    string script = @"<script type='text/javascript'> smoke.alert('Los campos con (*) son obligatorios', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                }
            }
            catch (Exception ex)
            {
                string script = @"<script type='text/javascript'> smoke.alert('" + ex.Message + "', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
            }
            finally
            {
                _servicio.Close();
            }
        }

        protected void btn_Agregar_Click(object sender, EventArgs e)
        {
            CrearUser();
        }

        protected void btn_Modificar_Click(object sender, EventArgs e)
        {
            modificarUsuario();
        }
    }
}